def get(x):
    if x == fa[x]: return x
    y = fa[x]
    fa[x] = get(fa[x])
    # 路径压缩后，x到根的距离要加上它父亲到根的距离。
    # 注意这个一定要写在get()后边，因为这涉及到递归，递归前后语句的顺序变了会影响很大。
    ds[x] += ds[y]
    return fa[x]

def merge(x, y):
    x = get(x)
    y = get(y)
    if x != y:
        fa[x] = y
        # x的根节点到新根节点的距离改为y的大小。
        ds[x] = sz[y]
        # y的大小等于他们俩的大小之和
        sz[y] += sz[x]

n = int(input())
fa = [i for i in range(30001)]
ds = [0 for i in range(30001)]
sz = [1 for i in range(30001)]
for i in range(n):
    t, a, b = input().split()
    a, b = int(a), int(b)
    if t == 'M':
        merge(a, b)
    else:
        if get(a) != get(b):
            print(-1)
        else:
            print(abs(ds[a]-ds[b]) - 1)

# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
